// ABC429C  关注map的使用， 乘法原理。
#include <bits/stdc++.h>
using namespace std;

int main() {
  int n;
  cin >> n;

  // 使用map统计每个数字出现的次数
  map<int, int> mp;
  for (int i = 1; i <= n; i++) {
    int k;
    cin >> k;
    mp[k]++; // 统计数字k出现的次数
  }

  // 初始化答案为0，使用long long防止整数溢出
  long long ans = 0;

  // 遍历map中的每个数字及其出现次数
  for (auto v : mp) {
    int k = v.second; // 当前数字出现的次数

    // 只有当当前数字出现至少2次时，才能形成"恰好两个不同数值"的三元组
    if (k >= 2) {
      // 计算当前数字对答案的贡献：
      // 1. 从当前数字中选2个：C(k, 2) = k * (k - 1) / 2
      // 2. 从其他数字中选1个：n - k
      // 3. 两者相乘得到当前数字能形成的三元组数量
      ans += (long long)k * (k - 1) / 2 * (n - k);
    }
  }

  // 输出最终答案
  cout << ans << endl;

  return 0;
}